$(function(){
    var ajaxLoader = new Z.AjaxLoader({
	url : Z.url('/backend/node/records'),
	templates : {
	    list : $('#list-template'),
	    none : $('#none-template').html(),
	    methods : {
		substr : function(string,length){
		    return Z.substr(string, 0, length);
		},
		thumbnail : function(name){
		    return Z.thumbnailName(name, '150_150');
		}
	    }
	},
	containers : {
	    list : $('ul.records'),
	    pagination : $('div.pagination')
	},
	after : function(data){
	    new Z.LightBox($('ul.records li[type="2"] span.image-container'),function(a){
		return $(a).children('img').attr('src').replace('150_150','');
	    });

	    Z.alignImage($('ul.records span.image-container img'), 150, 150);

	    $('ul.records li[type="1"] a.list').click(function(e){
		parent = $(this).parent().attr('data');
		ajaxLoader.request({
		    'parent' : parent
		});
	    });


	    $('ul.records li[type="2"] a.list').click(function(e){
		if(!e.ctrlKey){
		    var active = $(this).parent().siblings('.active');
		    if(active.length > 0){
			active.removeClass('active');
		    }
		}

		$(this).parent().toggleClass('active');

		return false;
	    });

	    $('ul.records li').mouseenter(function(){
		$(this).find('div.actions').show();
	    });

	    $('ul.records li').mouseleave(function(){
		$(this).find('div.actions').hide();
	    });

	    $('ul.records li div.cut-mask').click(function(){
		$(this).parent().removeClass('active');
		$(this).hide();

		var index = $.inArray($(this).parent().attr('data'), pasteboard);

		pasteboard = pasteboard.del(index);
	    });

	    var parentHtml = [];
	    $(data.parents).each(function(i,item){
		if(i > 0){
		    parentHtml.push('<li>/</li>');
		}
		parentHtml.push('<li><a href="javascript:void(0);" data="'+item.id+'">'+item.name+'</a></li>');
	    });
	    $('ul.parents').html(parentHtml.join(''));
	}
    }),
    getId = function(a){
	return Z.parseInt($(a).parent().parent().attr('data'));
    },
    parent = 0,
    pasteboard = [],
    uploadDialog;

    window.uploadBack = function(status,msg,data){
	switch(status){
	    case 'XT001':
		if(msg != ''){
		    Z.tip(msg,1.5);
		}
		ajaxLoader.reload();
		uploadDialog.close();
		break;
	    case 'XT002':
		Z.alert(msg||'操作失败');
		break;
	    case 'XT003':
		Z.alert(msg||'您不具备此操作权限');
		break;
	    case 'XT004':
		Z.alert(msg||'请先<a href="'+Z.url('/auth',true)+'">登录</a>');
		break;
	    default:
		Z.alert('未知错误!');
		break;
	}
    };


    $('a.add-image').click(function(){
	var	data = {
	    'parent' : parent,
	    'sizes' : '150_150',
	    'label' : '临时图片',
	    'callback' : 'uploadBack'
	};

	Z.form({
	    title : '添加图片',
	    width : 550,
	    content : $('#image-form-template').tmpl(data),
	    success : function(){
		ajaxLoader.reload();
	    },
	    open : function(dialog){
		uploadDialog = dialog;
		dialog.find('select[name="image_type"]').change(function(){
		    $(this).parent().next().children('input[name="sizes"]').val($(this).val());
		});
	    }
	});
	return false;
    });


    $('a.add-folder').click(function(){
	var	data = {
	    'parent' : parent,
	    'name' : ''
	};

	Z.form({
	    title : '添加目录',
	    width : 365,
	    content : $('#folder-form-template').tmpl(data),
	    success : function(){
		ajaxLoader.reload();
	    }
	});
	return false;
    });

    $('a.rename').live('click',function(){
	var data = {
	    'id':$(this).parent().parent().attr('data'),
	    'label':$(this).parent().parent().attr('title')
	};
	Z.form({
	    width : 365,
	    content : $('#rename-form-template').tmpl(data),
	    success : function(){
		ajaxLoader.reload();
	    }
	});

	return false;
    });

    $('a.delete').live('click',function(){
	var id = getId($(this)),
	type = Z.parseInt($(this).parent().parent().attr('type')),
	url;

	switch(type){
	    case 1:
		url = '/backend/folder/delete/';
		break;
	    case 2:
		url = '/backend/image/delete/';
		break;
	}

	Z.confirm({
	    'content' : '确定删除吗？',
	    'confirm' : function(){
		Z.ajax({
		    url : Z.url(url+id),
		    success : function(){
			ajaxLoader.reload();
		    }
		});
	    }
	});
	return false;
    });

    $('table.records thead  a').each(function(index){
	$(this).click(function(){
	    var order_type = -1 * (ajaxLoader.data.order_type || -1);

	    $('table.records thead th.asc').removeClass('asc');
	    $('table.records thead th.desc').removeClass('desc');
	    $(this).parent().addClass(order_type == 1?'asc':'desc');
	    ajaxLoader.request({
		'order_field' : index,
		'order_type' : order_type
	    });
	});
    });

    $('form.filter').submit(function(){
	ajaxLoader.request({
	    'parent' : -1,
	    'type' : Z.parseInt($(this).find('select[name=type]').val()),
	    'label' : $(this).find('input[name=label]').val(),
	    'start' : $(this).find('input[name=start]').val(),
	    'end' : $(this).find('input[name=end]').val()
	});
	return false;
    });

    $('ul.parents a').live('click',function(){
	parent = $(this).attr('data');
	ajaxLoader.request({
	    'parent' : parent
	});
	return false;
    });

    $('ul.button a.cut').click(function(){
	$('ul.records li[type="2"].active').each(function(){
	    pasteboard.push($(this).attr('data'));
	    $(this).children('div.cut-mask').show().css('opacity',0.5);
	});
    });

    $('ul.button a.paste').click(function(){
	if(pasteboard.length == 0){
	    return;
	}

	Z.ajax({
	    type : 'post',
	    url : Z.url('/backend/node/paste'),
	    data : {
		'parent' : parent ,
		'id' : pasteboard
	    },
	    success : function(){
		pasteboard = [];
		ajaxLoader.reload();
	    }
	});
    });

    $('ul.button a.page-size').click(function(){
	var active = $(this).parent().siblings('.right.active');
	if(active.length > 0){
	    active.removeClass('active');
	}
	$(this).parent().addClass('active');

	ajaxLoader.request({
	    pageSize : Z.parseInt($(this).html())
	});
    });

    ajaxLoader.request();


    $('input.datetime').datepicker({
	'dateFormat' : 'yy-mm-dd',
	'monthNames' : ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],
	'dayNames'   : ['周一','周二','周三','周四','周五','周六','周日'],
	'dayNamesMin'   : ['日','一','二','三','四','五','六']
    });
});
